package com.mi.db;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;

import com.mi.utils.MyUtils;

public class BasicProvider {

	/**
	 * 查询操作
	 * @param sql 要查询的SQL语句
	 * @param rsh 结果集接口
	 * @param params 参数列表
	 * @return  查询结果集
	 */
	public <T> T query(String sql, ResultSetHandler<T> rsh, Object... params) {
		// 查询结果集
		T t = null;
		try {
			// 创建一个QueryRunner类--等价于jdbc的statement查询器
			
			
			/*
			 * commons-dbutils是Apache提供的jdbc工具类库，主要包括DbUtils类、QueryRunner类以及ResultSetHandler接口
			 * QueryRunner类主要用于执行增删改查等SQL语句，若是执行查询sql语句，要结合ResultSetHandler接口来处理结果集
			 * 
			 */
			QueryRunner qr = new QueryRunner(DBCPDateSourse.getDataSource(), true);// 第二个参数是支持sql语句中使用占位符
			// 进行查询操作
			t = qr.query(sql, rsh, params);
		} catch (Exception e) {
			// 查询操作异常
			MyUtils.logRootLogger.info("查询操作异常:" + e.getMessage());
			e.printStackTrace();
		}
		// 返回值
		return t;
	}
	
	public int update(String sql, Object... params) {
		// 返回结果
		int i = 0;
		try {
			// 创建一个QueryRunner类--等价于jdbc的statement查询器
			QueryRunner qr = new QueryRunner(DBCPDateSourse.getDataSource(), true);// 第二个参数是支持sql语句中使用占位符
			// 进行修改、新增、删除操作
			// int org.apache.commons.dbutils.QueryRunner.update(String sql, Object... params) throws SQLException
			i = qr.update(sql, params);
		} catch (Exception e) {
			// 查询操作异常
			MyUtils.logRootLogger.info("新增、删除、修改操作异常:" + e.getMessage());
			e.printStackTrace();
		}
		// 返回值
		return i;
	}
}
